🎖️GitЯра🎖️
src/helpers/radiolib/CustomLR2021.h 890a2e2cffa98dea3ca88db3c3aba72ef23ff3f7 (890a2e2c) Text, 4.37 KB
Tff7b72#Tff7b72pragma once
Tff7b72#Tff7b72include T8b949e<RadioLib.h>
Tff7b72#Tff7b72include T8b949e"MeshCore.h"
Te6edf3class Te6edf3CustomLR2021 Tff7b72: Te6edf3public Te6edf3LR2021 Tb4b4b4{
Tffa657uint32_t Te6edf3_preambleMillis Tff7b72= T79c0ff66Tb4b4b4;
Tffa657uint32_t Te6edf3_maxPayloadMillis Tff7b72= T79c0ff3934Tb4b4b4;
Tffa657uint32_t Te6edf3_activityAt Tff7b72= T79c0ff0Tb4b4b4;
Tffa657bool Te6edf3_headerSeen Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_rx_boosted Tff7b72= Tffa657falseTb4b4b4;
Te6edf3publicTff7b72:
Te6edf3CustomLR2021Tb4b4b4(Te6edf3Module Tff7b72*Te6edf3modTb4b4b4) Tff7b72: Te6edf3LR2021Tb4b4b4(Te6edf3modTb4b4b4) Tb4b4b4{ Te6edf3irqDioNum Tff7b72= Te6edf3LR2021_IRQ_DIOTb4b4b4; Tb4b4b4}
Tffa657bool Te6edf3std_initTb4b4b4(Te6edf3SPIClassTff7b72* Te6edf3spi Tff7b72= Tffa657NULLTb4b4b4)
Tb4b4b4{
Tff7b72#Tff7b72ifdef LR2021_TCXO_VOLTAGE
Tffa657float Te6edf3tcxo Tff7b72= Te6edf3LR2021_TCXO_VOLTAGETb4b4b4;
Tff7b72#Tff7b72else
Tffa657float Te6edf3tcxo Tff7b72= T79c0ff1.6fTb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifdef LORA_CR
Tffa657uint8_t Te6edf3cr Tff7b72= Te6edf3LORA_CRTb4b4b4;
Tff7b72#Tff7b72else
Tffa657uint8_t Te6edf3cr Tff7b72= T79c0ff5Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if defined(P_LORA_SCLK)
Tff7b72#Tff7b72ifdef NRF52_PLATFORM
Tff7b72if Tb4b4b4(Te6edf3spiTb4b4b4) Tb4b4b4{ Te6edf3spiTff7b72-Tff7b72>Te6edf3setPinsTb4b4b4(Te6edf3P_LORA_MISOTb4b4b4, Te6edf3P_LORA_SCLKTb4b4b4, Te6edf3P_LORA_MOSITb4b4b4)Tb4b4b4; Te6edf3spiTff7b72-Tff7b72>Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72elif defined(RP2040_PLATFORM)
Tff7b72if Tb4b4b4(Te6edf3spiTb4b4b4) Tb4b4b4{
Te6edf3spiTff7b72-Tff7b72>Te6edf3setMISOTb4b4b4(Te6edf3P_LORA_MISOTb4b4b4)Tb4b4b4;
T8b949e//spi->setCS(P_LORA_NSS); // Setting CS results in freeze
Te6edf3spiTff7b72-Tff7b72>Te6edf3setSCKTb4b4b4(Te6edf3P_LORA_SCLKTb4b4b4)Tb4b4b4;
Te6edf3spiTff7b72-Tff7b72>Te6edf3setMOSITb4b4b4(Te6edf3P_LORA_MOSITb4b4b4)Tb4b4b4;
Te6edf3spiTff7b72-Tff7b72>Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Te6edf3spiTb4b4b4) Te6edf3spiTff7b72-Tff7b72>Te6edf3beginTb4b4b4(Te6edf3P_LORA_SCLKTb4b4b4, Te6edf3P_LORA_MISOTb4b4b4, Te6edf3P_LORA_MOSITb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif
Tffa657int Te6edf3status Tff7b72= Te6edf3beginTb4b4b4(Te6edf3LORA_FREQTb4b4b4, Te6edf3LORA_BWTb4b4b4, Te6edf3LORA_SFTb4b4b4, Te6edf3crTb4b4b4, Te6edf3RADIOLIB_LR2021_LORA_SYNC_WORD_PRIVATETb4b4b4, Te6edf3LORA_TX_POWERTb4b4b4, T79c0ff16Tb4b4b4, Te6edf3tcxoTb4b4b4)Tb4b4b4;
T8b949e// if radio init fails with -707/-706, try again with tcxo voltage set to 0.0f
Tff7b72if Tb4b4b4(Te6edf3status Tff7b72=Tff7b72= Te6edf3RADIOLIB_ERR_SPI_CMD_FAILED Tff7b72|Tff7b72| Te6edf3status Tff7b72=Tff7b72= Te6edf3RADIOLIB_ERR_SPI_CMD_INVALIDTb4b4b4) Tb4b4b4{
Te6edf3tcxo Tff7b72= T79c0ff0.0fTb4b4b4;
Te6edf3status Tff7b72= Te6edf3beginTb4b4b4(Te6edf3LORA_FREQTb4b4b4, Te6edf3LORA_BWTb4b4b4, Te6edf3LORA_SFTb4b4b4, Te6edf3crTb4b4b4, Te6edf3RADIOLIB_LR2021_LORA_SYNC_WORD_PRIVATETb4b4b4, Te6edf3LORA_TX_POWERTb4b4b4, T79c0ff16Tb4b4b4, Te6edf3tcxoTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3status Tff7b72!Tff7b72= Te6edf3RADIOLIB_ERR_NONETb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3printTb4b4b4(Ta5d6ff"Ta5d6ffERROR: radio init failed: Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3printlnTb4b4b4(Te6edf3statusTb4b4b4)Tb4b4b4;
Tff7b72return Tffa657falseTb4b4b4; T8b949e// fail
Tb4b4b4}
Te6edf3setCRCTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Te6edf3explicitHeaderTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72ifdef LR2021_RX_BOOSTED_GAIN
Te6edf3setRxBoostedGainModeTb4b4b4(Te6edf3LR2021_RX_BOOSTED_GAINTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4; T8b949e// success
Tb4b4b4}
Tffa657float Te6edf3getFreqMHzTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Te6edf3freqMHzTb4b4b4; Tb4b4b4}
Tffa657bool Te6edf3getRxBoostedGainModeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Te6edf3_rx_boostedTb4b4b4; Tb4b4b4}
Tffa657int16_t Te6edf3startReceiveTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
T8b949e// include the PREAMBLE_DETECTED irq bit in reported flags
Tff7b72return Te6edf3LR2021Tff7b72:Tff7b72:Te6edf3startReceiveTb4b4b4(Te6edf3RADIOLIB_LR2021_RX_TIMEOUT_INFTb4b4b4, Te6edf3RADIOLIB_IRQ_RX_DEFAULT_FLAGS Tff7b72| Tb4b4b4(T79c0ff1UL Tff7b72<Tff7b72< Te6edf3RADIOLIB_LR2021_IRQ_PREAMBLE_DETECTEDTb4b4b4)Tb4b4b4, Te6edf3RADIOLIB_IRQ_RX_DEFAULT_MASKTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657bool Te6edf3isReceivingTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3irq Tff7b72= Te6edf3getIrqStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3preamble Tff7b72= Te6edf3irq Tff7b72& Te6edf3RADIOLIB_LR2021_IRQ_PREAMBLE_DETECTEDTb4b4b4; T8b949e// bit 5
Tffa657bool Te6edf3header Tff7b72= Te6edf3irq Tff7b72& Te6edf3RADIOLIB_LR2021_IRQ_LORA_HEADER_VALIDTb4b4b4; T8b949e// bit 6
Tffa657bool Te6edf3hdrErr Tff7b72= Te6edf3irq Tff7b72& Te6edf3RADIOLIB_LR2021_IRQ_LORA_HDR_CRC_ERRORTb4b4b4; T8b949e// bit 9
Tffa657uint32_t Te6edf3now Tff7b72= Te6edf3millisTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hdrErrTb4b4b4) Tb4b4b4{
Te6edf3clearIrqFlagsTb4b4b4(Te6edf3RADIOLIB_LR2021_IRQ_PREAMBLE_DETECTED Tff7b72| Te6edf3RADIOLIB_LR2021_IRQ_LORA_HEADER_VALID Tff7b72| Te6edf3RADIOLIB_LR2021_IRQ_LORA_HDR_CRC_ERRORTb4b4b4)Tb4b4b4;
Te6edf3_activityAt Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3_headerSeen Tff7b72= Tffa657falseTb4b4b4;
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3header Tff7b72&Tff7b72& Te6edf3_headerSeenTb4b4b4) Tb4b4b4{
T8b949e// something cleared the header flag, reset our state.
Te6edf3_activityAt Tff7b72= T79c0ff0Tb4b4b4; Te6edf3_headerSeen Tff7b72= Tffa657falseTb4b4b4;
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_headerSeenTb4b4b4) Tb4b4b4{ Te6edf3_headerSeen Tff7b72= Tffa657trueTb4b4b4; Te6edf3_activityAt Tff7b72= Te6edf3nowTb4b4b4; Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3now Tff7b72- Te6edf3_activityAt Tff7b72> Te6edf3_maxPayloadMillisTb4b4b4) Tb4b4b4{
Te6edf3MESH_DEBUG_PRINTLNTb4b4b4(Ta5d6ff"Ta5d6ffClearing header IRQ after %umsTa5d6ff"Tb4b4b4, Te6edf3_maxPayloadMillisTb4b4b4)Tb4b4b4;
Te6edf3clearIrqFlagsTb4b4b4(Te6edf3RADIOLIB_LR2021_IRQ_PREAMBLE_DETECTED Tff7b72| Te6edf3RADIOLIB_LR2021_IRQ_LORA_HEADER_VALID Tff7b72| Te6edf3RADIOLIB_LR2021_IRQ_LORA_HDR_CRC_ERRORTb4b4b4)Tb4b4b4;
Te6edf3_activityAt Tff7b72= T79c0ff0Tb4b4b4; Te6edf3_headerSeen Tff7b72= Tffa657falseTb4b4b4;
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3preambleTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_activityAt Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Te6edf3_activityAt Tff7b72= Te6edf3nowTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3now Tff7b72- Te6edf3_activityAt Tff7b72> Te6edf3_preambleMillisTb4b4b4) Tb4b4b4{
Te6edf3clearIrqFlagsTb4b4b4(Te6edf3RADIOLIB_LR2021_IRQ_PREAMBLE_DETECTEDTb4b4b4)Tb4b4b4;
Te6edf3_activityAt Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3MESH_DEBUG_PRINTLNTb4b4b4(Ta5d6ff"Ta5d6ffClearing preamble IRQ after %umsTa5d6ff"Tb4b4b4, Te6edf3_preambleMillisTb4b4b4)Tb4b4b4;
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}
Te6edf3_activityAt Tff7b72= T79c0ff0Tb4b4b4; Te6edf3_headerSeen Tff7b72= Tffa657falseTb4b4b4;
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3setPreambleMillisTb4b4b4(Tffa657uint32_t Te6edf3preambleMillisTb4b4b4) Tb4b4b4{
Te6edf3_preambleMillis Tff7b72= Te6edf3preambleMillisTb4b4b4;
Te6edf3MESH_DEBUG_PRINTLNTb4b4b4(Ta5d6ff"Ta5d6ffSet _preambleMillis=%uTa5d6ff"Tb4b4b4, Te6edf3_preambleMillisTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3setMaxPayloadMillisTb4b4b4(Tffa657uint32_t Te6edf3payloadMillisTb4b4b4) Tb4b4b4{
Te6edf3_maxPayloadMillis Tff7b72= Te6edf3payloadMillisTb4b4b4;
Te6edf3MESH_DEBUG_PRINTLNTb4b4b4(Ta5d6ff"Ta5d6ffSet _maxPayloadMillis=%uTa5d6ff"Tb4b4b4, Te6edf3_maxPayloadMillisTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657uint8_t Te6edf3getSpreadingFactorTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Te6edf3spreadingFactorTb4b4b4; Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Served by rngit 1.5.2 - Generated in 0.38s